A personal computer system typically includes a system unit having a central processing unit (CPU) and associated memory, and a storage device such as a hard disk, floppy disk or CD ROM, a display device, and an input device such as a keyboard or mouse. When a computer system is powered on, or “booted,” the computer must ensure that all computer components are functional, and subsequently load the operating system. These functions are performed by code referred to as the Basic Input/Output System (the system BIOS). The BIOS also contains data and instructions that enable the operating system to access system hardware. The system BIOS is stored in system memory, typically in non-volatile memory such as flash memory. During booting, the system BIOS first performs a Power On Self Test (POST), then proceeds to load the operating system. Following successful loading of the operating system, the user will be able to take advantage of all features and functionality offered by or through the operating system.
There are many occasions on which it is desirable to update the system BIOS. For example, the system BIOS must be updated to take advantage of new BIOS features that become available, or to enable the BIOS to support new system hardware. Updating is also necessary if problems with the system BIOS are detected.
Often, it is also desirable to remotely update the system BIOS. For example, for computer systems on a network it is more convenient and time efficient to update the BIOS of remote systems on the network from a single separately located system, such as from a system administrator. Currently, this can be accomplished in remote computer systems that are capable of executing a “soft” reboot rather than a full reboot such as that which occurs when the computer system is powered on. During a soft reboot the contents of system memory are maintained throughout the soft reboot procedure. For example, computers supporting an Intel IA-32 architecture are capable of executing a soft reboot. The updated BIOS image is sent through a network to the target computer system and placed in system memory as described above. Once in system memory, a flag in the CMOS is set (the RBU flag or “Request BIOS Update”) flag, and the system is subsequently directed by the system management agent to execute a soft reboot. When rebooting, the system BIOS determines that the RBU flag is set, and proceeds to replace the system BIOS with the updated system BIOS that is stored in system memory. The RBU flag is then reset, and the system rebooted again to run the updated BIOS. It also may be advantageous for the system BIOS to place a completion status message in the System Management portion of the BIOS (SMBIOS) or the equivalent. On rebooting, the system BIOS will check the completion status to ensure that the update was completed successfully. Although advantageous, the completion status message is also problematic because it requires accessing the system BIOS during the booting procedure, which requires additional BIOS interface code. Further, many future systems will not include an SMBIOS portion.
The above method for remotely updating a system BIOS is possible only in computer systems capable of executing a soft reboot where the contents of the system memory are maintained throughout the soft reboot. This feature, however, does not exist for many newer computer systems, including computer systems that are based on Intel IA-64 architecture. In these systems, no soft reboot is available and the contents of the system memory are lost during a system reboot.